var browser = {

    //判断设备类型
    versions: function() {
        var u = navigator.userAgent;
        return {
            mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
            android: !!u.match(/Android/i), //安卓终端
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
            weixin: !!u.match(/MicroMessenger/i), //微信
            weibo: !!u.match(/WeiBo/i), //微博
            iPad: !!u.match(/iPad/i), //iPad
            windows: !u.match(/(iPhone|iPad|Android|ios)/i) && !u.match(/AppleWebKit.*Mobile.*/) //pc平台
        };
    }(),

    //获取url参数
    getUrlParam: function(name) {
        var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); //构造一个含有目标参数的正则表达式对象
        var r = window.location.search.substr(1).match(reg); //匹配目标参数
        if (r != null && r[2] !== '') return decodeURI(r[2]);
        return null; //返回参数值
    },

    //是否手机号
    isMobile(v) {
        const re = /^(?:13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])-?\d{5}(\d{3}|\*{3})$/;
        return re.test(v);
    },

    //是否邮箱
    isEmail(v) {
        const re = /^([a-zA-Z0-9]+\.?[a-zA-Z0-9]+)+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]{2,})$/;
        return re.test(v);
    },

    //随机数字 包含下限数字，不包含上限数字
    randomRange: function random(lower, upper) {
        return Math.floor(Math.random() * (upper - lower)) + lower;
    },

    //对象深度拷贝
    deepCopy: function(obj) {
        let result = Array.isArray(obj) ? [] : {};
        for (let key in obj) {
            if (obj.hasOwnProperty(key)) {
                if (typeof obj[key] === 'object' && obj[key] !== null) {
                    result[key] = this.deepCopy(obj[key]); //递归复制
                } else {
                    result[key] = obj[key];
                }
            }
        }
        return result;
    },

    setSessionStorage: function(name, value) {
        return sessionStorage.setItem(name, JSON.stringify(value));
    },

    getSessionStorage: function(name) {
        return JSON.parse(sessionStorage.getItem(name));
    },

    removeSessionStorage: function(name) {
        return sessionStorage.removeItem(name);
    },

};